﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FAS.App_Code;
using FAS.Objetos;

namespace FasGUI
{
    public partial class EditarExamen : Form
    {
        private Form inicio;
        private Examen examen;
        private Problema seleccionado;
        int value;
        public EditarExamen(Form inicio,Examen examen)
        {
            value = 0;
            this.inicio = inicio;
            this.examen = examen;
            InitializeComponent();
            fillCombo();
            showProblema();
            this.label1.Text = "Examen: " + examen.Clave;
            this.Show();
        }

        private void showProblema()
        {
            Problema problema = this.examen.Problemas[comboBox1.SelectedIndex];
            fillProblema(problema);
        }

       
        public void fillCombo()
        {
            for (int x = 0; x < examen.Problemas.Count;x++ )
                this.comboBox1.Items.Add(""+(x+1));
            this.comboBox1.SelectedIndex = 0;
        }



        private void FormFiltroCatalogo_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.Dispose();
            inicio.Show();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Dispose();
            inicio.Show();
        }

    

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            this.examen.Problemas[comboBox1.SelectedIndex] = seleccionado;
            this.examen.delete();
            Examen modificado = new Examen();
            modificado.Parcial = examen.Parcial;
            modificado.Problemas = examen.Problemas;
            modificado.Periodo = examen.Periodo;
            modificado.idMateria = examen.idMateria;
            modificado.pdf = examen.pdf;
            modificado.Clave = examen.Clave;
            modificado.insertar();
            MessageBox.Show("Se Ha Actualizado el Examen");
            this.Dispose();
            inicio.Show();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ConexionMySQL conexion = new ConexionMySQL();
            DataSet data = conexion.GetQuery("SELECT * FROM Problema where IdMateria = '" + examen.Problemas[0].IdMateria+ "'");  
            int a=0;
            foreach(DataRow row in data.Tables[0].Rows)
            {
                
                int id = int.Parse(row[0].ToString());
                if(!inExamen(id))
                {
                    if (a == value)
                    {
                        value++;
                        Problema p = new Problema();
                        p.IdProblema = int.Parse(row["IdProblema"].ToString());
                        p.Nombre = row["Nombre"].ToString();
                        p.IdMateria = int.Parse(row["IdMateria"].ToString());
                        p.IdObjetivo = row["IdObjetivo"].ToString();
                        p.Opciones = new List<Opcion>();
                        p.Texto = row["Texto"].ToString();
                        int y=-1;
                        DataTable tab = conexion.GetQuery("SELECT Texto FROM Opcion where IdProblema = '" + row["IdProblema"].ToString()+ "'").Tables[0];
                        llenarProblema(new Opcion(), ref p,tab.Rows[++y][0].ToString());
                        llenarProblema(new Opcion(), ref p, tab.Rows[++y][0].ToString());
                        llenarProblema(new Opcion(), ref p, tab.Rows[++y][0].ToString());
                        llenarProblema(new Opcion(), ref p, tab.Rows[++y][0].ToString());
                        fillProblema(p);
                        return;
                    }
                    a++;
                }
            }
            MessageBox.Show("No Existen Problemas Para Cambiar");
        }

        private void llenarProblema(Opcion opcion, ref Problema p, string p_2)
        {
            opcion.Texto = p_2;
            p.Opciones.Add(opcion);
        }

        private void fillProblema(Problema p)
        {
            int x = -1;
            txtProblema.Rtf = p.Texto;
            txtOpcionA.Rtf = p.Opciones[++x].Texto;
            txtOpcionB.Rtf = p.Opciones[++x].Texto;
            txtOpcionC.Rtf = p.Opciones[++x].Texto;
            txtOpcionD.Rtf = p.Opciones[++x].Texto;
            seleccionado = p;
        }

        private Boolean inExamen(int id) 
        {
            foreach (Problema p in examen.Problemas)
                if (p.IdProblema == id)
                    return true;
            return false;
        }

        private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            value = 0;
            showProblema();
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            button1_Click(sender, e);
        }

        private void button3_Click_1(object sender, EventArgs e)
        {
            button3_Click(sender, e);
        }

        private void btnGuardar_Click_1(object sender, EventArgs e)
        {
            btnGuardar_Click(sender, e);
        }

        private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)
        {

        }
    }
}